/*
 * @lc app=leetcode.cn id=997 lang=typescript
 *
 * [997] 找到小镇的法官
 */

// @lc code=start
function findJudge(n: number, trust: number[][]): number {
    // 没有 trust 的时候，n=1 成立，其他不成立
    if (trust.length === 0) return n === 1 ? 1 : -1;
    let cache = new Map<number, number>();
    let errorSet = new Set<number>();
    trust.forEach(([a, b]) => {
        cache.set(b, (cache.get(b) || 0) + 1);
        errorSet.add(a);
    });
    errorSet.forEach((i) => {
        cache.delete(i);
    });
    for (const [key, count] of cache.entries()) {
        if (count === n - 1) return key;
    }
    return -1;
}
// @lc code=end
